package main

import "fmt"

/**
	*p 取值, &p 取地址
 */

func main()  {
	a := 10
	//定义一个指针类型变量 *加数据类型
	var p *int
	//赋值，将变量a的地址给p,&加变量名，这时p这个指针指向的就是变量a的内存地址
	p = &a
	//*p 这个是操作这个指针指向的地址，这里就是操做p这个指针指向的地址，就是操作a这个的变量的地址，所以就是操作a,给a重新赋值
	*p = 666
	fmt.Println(p)
	fmt.Println(*p)
	fmt.Println(a)

	//自动推导类型
	b := &a
	fmt.Println(b)
	*b = 888
	fmt.Println(*b)

	//new函数的使用，取一块变量地址给c,相当于是指向一个没有名字的变量地址
	c := new(int)
	*c = 888
	fmt.Println(*c)
}
